package com.wuh.service;

import java.util.List;

import com.github.pagehelper.PageInfo;
import com.wuh.model.*;
import com.wuh.model.TeacherPhrase;

public interface CastleService {

	/**
	 * 获取所有的castle
	 * @param castleInfo
	 * @return
	 */
	PageInfo<CastleInfo> getCastleInfos(CastleInfo castleInfo); 
	
	/**
	 * 获取3个castle
	 * @param castleInfo
	 * @return
	 */
	List<CastleInfo> getCastleInfoLimit(); 
	
	/**
	 * 通过castle的id来获取
	 * @param castle_id
	 * @return
	 */
	CastleInfo getCastleInfoById(Integer castle_id);
	
	/**
	 * 获取所有的城堡属性
	 * @return
	 */
	List<CastleType> getCastleTypes();
	
	/**
	 * 获取所有的商城属性
	 * @return
	 */
	List<MallType> getMallTypes();
	
	/**
	 * 添加商城商品
	 * @param castleInfo
	 * @return
	 */
	void addCastle(CastleInfo castleInfo);
	
	/**
	 * 添加商品资料文件
	 * @param castleAtta
	 * @return
	 */
	void addAtta(CastleAtta castleAtta);
	
	/**
	 * 获取用户购买的课程信息
	 * @return
	 */
	PageInfo<CastleSignup> getSignups(CastleSignup castleSignup);

	/**
	 * 添加用户购买信息
	 * @param castleSignup
	 * @return
	 */
	void addSignup(CastleSignup castleSignup);
	
	/**
	 * 修改castle信息
	 * @param castleInfo
	 * @return
	 */
	void editCastle(CastleInfo castleInfo);
	
	/**
	 * 根据castle id来获取所有的文件信息
	 * @return
	 */
	List<CastleAtta> getAttas(Integer castle_id);
	
	/**
	 * 删除福利城堡信息
	 * @param castle_id
	 * @return
	 */
	void delCastle(Integer castle_id);
	
	/**
	 * 根据城堡id来删除附带的文件信息
	 * @param castle_id
	 * @return
	 */
	void delAttas(Integer castle_id);
	
	/**
	 * 用户退出
	 * @param castleSignup
	 * @return
	 */
	void delSignup(CastleSignup castleSignup);
	
	/**
	 * 根据id值来获取atta表中的数据
	 * @param attachment_id
	 * @return
	 */
	CastleAtta getAttaById(Integer attachment_id);
	
	/**
	 * 根据课程id来获取所有的评论
	 * @param castle_id
	 * @return
	 */
	List<CastleComment> getCastleComments(Integer castle_id);
	
	/**
	 * 添加收藏
	 * @param castle_id
	 * @param user_id
	 */
	void addCollect(CastleCollect castleCollect);
	
	/**
	 * 删除收藏
	 * @param castleCollect
	 * @return
	 */
	void delCollect(CastleCollect castleCollect);
	
	/**
	 * 获取收藏
	 * @param castleCollect
	 * @return
	 */
	CastleCollect getCastleCollect(CastleCollect castleCollect);

	/**
	 * 添加评论
	 * @param castleComment1
	 * @return
	 */
	void addComment1(CastleComment castleComment);
	
	/**
	 * 删除评论
	 * @param coment_id
	 * @return
	 */
	void delComment(Integer coment_id);

	/**
	 * 修改评论
	 * @param castleComment
	 * @return
	 */
	void editComment(CastleComment castleComment);

	List<Integer> getCastleIdByGroup(Integer gid);

	void updatecastleId(CastleInfo castleInfo);

	/**
	 * 批量关闭课程
	 * @param ids
	 * @return
	 */
	void closeCastles(Integer[] ids);

	/**
	 * 批量恢复课程
	 * @param ids
	 * @return
	 */
	void refreshCastles(Integer[] ids);

	/**
	 * 批量删除课程
	 * @param ids
	 */
	void delCastles(Integer[] ids);

	/**
	 * 获取单个的signup
	 * @param castleSignup
	 * @return
	 */
	CastleSignup getSignup(CastleSignup castleSignup);

	/**
	 * 给教师点赞
	 * @param teacherPhrase
	 * @return
	 */
	void addTeacherPhrase(TeacherPhrase teacherPhrase);

	/**
	 * 给教师取消点赞
	 * @param teacherPhrase
	 * @return
	 */
	void delTeacherPhrase(TeacherPhrase teacherPhrase);

	/**
	 * 获取这个用户所有的点赞
	 * @param user_id
	 * @return
	 */
	List<TeacherPhrase> getTeacherPhraseByUserId(Integer user_id);
}
